# -*- coding=utf-8-*-
"""
@File:memory_selection
@Author:Created by Han X.Y
@Date:on 2021/7/9 10:42 
"""

"""
给定两个数组的交集II
-   输出结果中每个元素出现的次数，应与元素在两个数组中出现数的最小值一致
- 我们可以不考虑输出结果的顺序


ex1:
    nums1=[1,2,2,1],nums2=[2,2]-->[2,2]
    nums1=[4,9,5],nums2=[9,4,9,8,4]-->[4,9]
    nums1=[3,1,2],nums2=[1,1]-->[1]
"""
class Solution:
    def intersect(self, nums1, nums2):
        min_nums,max_nums=sorted([nums1,nums2],key=lambda x:len(x))
        res=[]
        for i in set(min_nums):
            if i in max_nums:
                min_counts=min(min_nums.count(i),max_nums.count(i))

                res.extend([i]*min_counts)
        return res